import { PageParam } from '@/services/common'
import { covertTableData } from '@/utils/tableUtil'
import { request } from '@umijs/max'

export interface OrderVO {
  /**
   * id
   */
  id: string
  /**
   * 客户id
   */
  customerId?: string
  /**
   * 客户姓名
   */
  customerName?: string
  /**
   * 商品id
   */
  goodsId?: string
  /**
   * 商品名称
   */
  goodsName?: string
  /**
   * 商品价格
   */
  goodsPrice: number
  /**
   * 销售id
   */
  sellerId?: string
  /**
   * 销售姓名
   */
  sellerName?: string
  /**
   * 实际价格
   */
  realPrice: number
  /**
   * 已付金额
   */
  alreadyPay: number
  /**
   * 欠款
   */
  arrears: number
  /**
   * 预计拍摄日期
   */
  expectPhotoTime?: string
  photoType: string
  /**
   * 备注
   */
  remark?: string
  /**
   * 创建人id
   */
  creatorId?: string
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 更新时间
   */
  updateTime?: string
}

export interface OrderQueryDTO extends PageParam {
  /**
   * id
   */
  id: string
}

export interface OrderUpdateDTO {
  /**
   * id
   */
  id: string
  /**
   * 客户id
   */
  customerId?: string
  /**
   * 客户姓名
   */
  customerName?: string
  /**
   * 商品id
   */
  goodsId?: string
  /**
   * 商品名称
   */
  goodsName?: string
  /**
   * 商品价格
   */
  goodsPrice: number
  /**
   * 销售id
   */
  sellerId?: string
  /**
   * 销售姓名
   */
  sellerName?: string
  /**
   * 实际价格
   */
  realPrice: number
  /**
   * 已付金额
   */
  alreadyPay: number
  /**
   * 欠款
   */
  arrears: number
  /**
   * 预计拍摄日期
   */
  expectPhotoTime?: string
  /**
   * 备注
   */
  remark?: string
  /**
   * 创建人id
   */
  creatorId?: string
  photoType: string
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 更新时间
   */
  updateTime?: string
}

export const getOrderById = async (id: string) => {
  return request<OrderVO>(`/api/order?id=${id}`, { method: 'GET' })
}

export const getOrderList = async (params: OrderQueryDTO) => {
  return request<Array<OrderVO>>(`/api/order/list`, { method: 'GET', params })
}

export const getOrderPage = async (params: OrderQueryDTO) => {
  let response = await request<Array<OrderVO>>(`/api/order/page`, { method: 'GET', params })
  return covertTableData(response)
}

export const updateOrder = async (orderUpdateDTO: OrderUpdateDTO) => {
  return request<OrderVO>(`/api/order/update`, { method: 'POST', data: orderUpdateDTO })
}

export const saveOrder = async (orderUpdateDTO: OrderUpdateDTO) => {
  return request<OrderVO>(`/api/order/save`, { method: 'POST', data: orderUpdateDTO })
}

export const removeOrder = async (id: string) => {
  return request<boolean>(`/api/order/remove?id=${id}`, { method: 'POST' })
}
